/**
 * Callback method for when form is shown.
 *
 * @param {Boolean} [firstShow] form is shown first time after load
 * @param {JSEvent} [event] the event that triggered the action
 *
 * @properties={typeid:24,uuid:"69970362-D899-4640-8C21-F8F2902A6C1B"}
 */
function iniciar(firstShow, event) 
{
	databaseManager.setAutoSave(false)
	controller.newRecord();	
	fecha			= application.getServerTimeStamp();
	concepto		= 'Transferencia entre Cajas';
	caja_origen_id	= null;
	caja_destino_id	= null;
	moneda_id		= null;
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"B18F713D-FEF3-495E-A46C-848D531F5FBC"}
 */
function confirmar(event) 
{
	if (cheques < 0)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Monto de cheques no puede ser negativo','OK')
		return
	}
	if (efectivo < 0)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Monto de efectivo no puede ser negativo','OK')
		return
	}
	if (cheques == 0 && efectivo == 0)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Montos de efectivo y cheques son cero','OK')
		return
	}
	if ((caja_origen_id == null) || (caja_destino_id == null) )//|| (caja_origen_id == caja_destino_id))  
	{
		if (caja_origen_id == null)
		{
			globals.DIALOGS.showWarningDialog('Aviso','Debe informar cuenta de caja origen','OK')
			elements.caja_origen_id.requestFocus()
		}
		if (caja_destino_id == null)
		{
			globals.DIALOGS.showWarningDialog('Aviso','Debe informar cuenta de caja destino','OK')
			elements.caja_destino_id.requestFocus()
		}
	}	
	else
	{
		if (moneda_id == null)
			moneda_id=transf_cajas_origen_to_cuentas_cyb.moneda_id;
		globals.gtotal_cheques = 0
		// crea foundset para graba movim_cyb no relacionada con trans_caja o trans_cheques
		var fs_movim_cyb = databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'movim_cyb')
		var found = transf_cajas_to_transf_cheques.getSize()
		// por cada cheque elegido Ingreso en caja destino, egreso de caja origen, resta a saldo_valores cuenta origena, suma a saldo_valores cuenta destino
		for (var i = 1 ; i <= found; i++)
		{
			transf_cajas_to_transf_cheques.setSelectedIndex(i);	
			
			// resta de tabla saldos_caja origen cada cheque de la cuenta origen, esta bien ?
			// la cuenta del cheque antes de regrabar es la cuenta origen
			transf_cajas_origen_to_cuentas_cyb.cuentas_cyb_to_saldos_caja.saldo_valores -= transf_cajas_to_transf_cheques.importe;
				
			// egreso caja origen de cada cheque
			fs_movim_cyb.newRecord();
			fs_movim_cyb.cheque_id			= transf_cajas_to_transf_cheques.cheques_id
			fs_movim_cyb.cod_movim			= globals.zconf_cyb_cod_movim_egreso
			fs_movim_cyb.concepto			= concepto
			fs_movim_cyb.cuentas_cyb_id		= caja_origen_id   //   o la que se ingresó por pantalla como origen  . deberia ser la misma
			fs_movim_cyb.empresa_id			= 0 
			fs_movim_cyb.fecha_conciliacion	= null
			fs_movim_cyb.fecha_movim		= fecha
			fs_movim_cyb.importe			= transf_cajas_to_transf_cheques.importe
			fs_movim_cyb.imputacion_id		= globals.zconf_cyb_imputacion_transferencia_a_caja 
			fs_movim_cyb.marca_conciliacion	= 0 
			fs_movim_cyb.referencia			= transf_cajas_to_transf_cheques.cheque_nro
			fs_movim_cyb.valor_id			= transf_cajas_to_transf_cheques.transf_cheques_to_cheques.valor_id
			fs_movim_cyb.apertura_id		= transf_cajas_origen_to_cuentas_cyb.apertura_id
			
			// regrabar cuenta del cheque con cuenta destino y desmarcar
			transf_cajas_to_transf_cheques.transf_cheques_to_cheques.cuentas_cyb_id	= caja_destino_id
			transf_cajas_to_transf_cheques.transf_cheques_to_cheques.marcado_cheque	= 0
			
			// suma a tabla saldos_caja destino cada cheque de la cuenta destino ?
			// la cuenta del cheque despues de regrabar es la cuenta destino
			transf_cajas_destino_to_cuentas_cyb.cuentas_cyb_to_saldos_caja.saldo_valores += transf_cajas_to_transf_cheques.importe
			
			// acumula total de cheques
			globals.gtotal_cheques += transf_cajas_to_transf_cheques.importe
			
			// ingreso caja destino por cada cheque
			fs_movim_cyb.newRecord()
			fs_movim_cyb.cheque_id			= transf_cajas_to_transf_cheques.cheques_id
			fs_movim_cyb.cod_movim			= globals.zconf_cyb_cod_movim_ingreso
			fs_movim_cyb.concepto			= concepto
			//? fs_movim_cyb.cuentas_cyb_id=transf_cajas_to_transf_cheques.transf_cheques_to_cheques.cuentas_cyb_id
			fs_movim_cyb.cuentas_cyb_id		= caja_destino_id
			fs_movim_cyb.empresa_id			= 0 
			fs_movim_cyb.fecha_conciliacion	= null
			fs_movim_cyb.fecha_movim		= fecha
			fs_movim_cyb.importe			= transf_cajas_to_transf_cheques.importe
			fs_movim_cyb.imputacion_id		= globals.zconf_cyb_imputacion_transferencia_desde_caja 
			fs_movim_cyb.marca_conciliacion	= 0 
			fs_movim_cyb.referencia			= transf_cajas_to_transf_cheques.cheque_nro 
			fs_movim_cyb.valor_id			= transf_cajas_to_transf_cheques.transf_cheques_to_cheques.valor_id 
			fs_movim_cyb.apertura_id		= transf_cajas_destino_to_cuentas_cyb.apertura_id
		}
		if (efectivo != 0)
		{
			// 2 movim_cyb:uno de I a la caja destino y otro de E de la caja origen y sus respectivos saldos_caja
			
			// ingreso a caja destino del efectivo
			fs_movim_cyb.newRecord()
			fs_movim_cyb.cheque_id			= null
			fs_movim_cyb.cod_movim			= globals.zconf_cyb_cod_movim_ingreso
			fs_movim_cyb.concepto			= concepto 
			fs_movim_cyb.cuentas_cyb_id		= caja_destino_id
			fs_movim_cyb.empresa_id			= 0 
			fs_movim_cyb.fecha_conciliacion	= null
			fs_movim_cyb.fecha_movim		= fecha
			fs_movim_cyb.importe			= efectivo
			fs_movim_cyb.imputacion_id		= globals.zconf_cyb_imputacion_transferencia_desde_caja
			fs_movim_cyb.marca_conciliacion	= 0  
			fs_movim_cyb.referencia			= 'Efectivo'
			fs_movim_cyb.valor_id			= 1  // efectivo
			fs_movim_cyb.apertura_id		= transf_cajas_destino_to_cuentas_cyb.apertura_id
			
			// suma a tabla saldos_caja destino el efectivo
			transf_cajas_destino_to_cuentas_cyb.cuentas_cyb_to_saldos_caja.saldo_efectivo += efectivo
			
			
			// egreso caja origen del efectivo
			fs_movim_cyb.newRecord()
			fs_movim_cyb.cheque_id			= null
			fs_movim_cyb.cod_movim			= globals.zconf_cyb_cod_movim_egreso
			fs_movim_cyb.concepto			= concepto
			fs_movim_cyb.cuentas_cyb_id		= caja_origen_id
			fs_movim_cyb.empresa_id			= 0 
			fs_movim_cyb.fecha_conciliacion	= null
			fs_movim_cyb.fecha_movim		= fecha
			fs_movim_cyb.importe			= efectivo
			fs_movim_cyb.imputacion_id		= globals.zconf_cyb_imputacion_transferencia_a_caja
			fs_movim_cyb.marca_conciliacion	= 0 
			fs_movim_cyb.referencia			= 'Efectivo'
			fs_movim_cyb.valor_id			= 1  // efectivo
			fs_movim_cyb.apertura_id		= transf_cajas_origen_to_cuentas_cyb.apertura_id
			
			// resta a tabla saldos_caja destino el efectivo
			transf_cajas_origen_to_cuentas_cyb.cuentas_cyb_to_saldos_caja.saldo_efectivo -= efectivo
		}
		 	   
		var estado = databaseManager.saveData()
		if (estado == true)
		{
			globals.DIALOGS.showInfoDialog('Transferencia',  'Se realizó transferencia entre ' + transf_cajas_origen_to_cuentas_cyb.descripcion + ' y ' + transf_cajas_destino_to_cuentas_cyb.descripcion,  "OK")
			iniciar();
		}
		else
		{
			globals.DIALOGS.showInfoDialog('Transferencia', 'NO se pudo realizar la transferencia ',  "OK")
			cancelar();
			iniciar();
		}
	}
}

/**
 *
 * @properties={typeid:24,uuid:"96B34878-28E8-49DD-9171-5F5F9AFB8C0C"}
 */
function cancelar() 
{
	databaseManager.revertEditedRecords();
	databaseManager.setAutoSave(true);	
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"D69E847F-BF60-438C-8427-CD57487C8C67"}
 */
function agregar_cheque(event) 
{	
	if (caja_origen_id == null)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe informar cuenta de caja origen','OK')
		elements.caja_origen_id.requestFocus();
	}
	else
	{	
		globals.gCuenta_cyb = caja_origen_id
	    // llamar al otro form para seleccionar los cheques a transferir.
	    globals.formEnVentana('cheques_a_transf','chq_a_trans','Cheques en Caja a Transferir')
		// vuelve del anterior form con las columnas de transf_cheques dadas de alta con los datos de los mov. de ctacte marcados
		nro_cheques = globals.cuantos_cheques
		cheques		= globals.gtotal_cheques
	}
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"B47317D1-87D8-441F-B5D3-A02BFCB5BCAD"}
 */
function buscar_saldo(event) 
{
	efectivo = transf_cajas_origen_to_cuentas_cyb.cuentas_cyb_to_saldos_caja.saldo_efectivo;
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"A2F4FBC4-9A2D-4D8F-9E17-FB6B652EB1C8"}
 */
function comparar_cuentas(event) 
{
	if (caja_origen_id != caja_destino_id)
	{
		if (transf_cajas_origen_to_cuentas_cyb.moneda_id != transf_cajas_destino_to_cuentas_cyb.moneda_id)
		{
			globals.DIALOGS.showWarningDialog('Aviso','Las monedas de las cuentas origen y destino deben ser iguales','OK')
			elements.caja_destino_id.requestFocus();
		}
		else
		{
			moneda_id = transf_cajas_origen_to_cuentas_cyb.moneda_id
		}
	}
	else
	{
		globals.DIALOGS.showWarningDialog('Aviso','Las cuentas origen y destino no deben ser iguales','OK')
		elements.caja_destino_id.requestFocus();
	}
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"1F4EF60A-6530-4EEE-87CD-BB1F129AAB2E"}
 */
function validar_efectivo_ingresado(oldValue, newValue, event) {
	if (efectivo > transf_cajas_origen_to_cuentas_cyb.cuentas_cyb_to_saldos_caja.saldo_efectivo)
	{
		globals.DIALOGS.showWarningDialog('Aviso','El efectivo a transferir no puede ser mayor que el saldo existente de $ ' + transf_cajas_origen_to_cuentas_cyb.cuentas_cyb_to_saldos_caja.saldo_efectivo,'OK')
		efectivo = transf_cajas_origen_to_cuentas_cyb.cuentas_cyb_to_saldos_caja.saldo_efectivo;
	}
	return true
}

/**
 *
 * @properties={typeid:24,uuid:"AC843AC5-C6EA-40CA-B1BF-4CAF9622D6B7"}
 */
function limpiar() 
{
	cancelar();
	iniciar();
}
